/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package boole.circuit;

import boole.port._PortEntree;
import boole.port._PortSortie;
import boole.utils.Entree;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author Rémi PIOTAIX <remi.piotaix@gmail.com>
 */
public class BasicComposite extends Composite {

    private Set<Entree> entrees = new HashSet();
    private String nom;

    public BasicComposite(String nom, int nombreEntrees, int nombreSorties) {
        super(nombreEntrees, nombreSorties);
        this.nom = nom;
    }
    
    public void addEntree(int numEntree, int cibleId, int numEntreeCible) {
        this.entrees.add(new Entree(numEntree, cibleId, numEntreeCible));
    }

    public void link() {
        if (entrees == null) {
            return;
        }

        for (Entree e : entrees) {
            _Composant cible = this.getOperateurs().get(e.getCibleId());
            
            _PortSortie entreeComposite = this.getEntree(e.getNumEntree());
            _PortEntree portCible = cible.getEntree(e.getNumEntreeCible());
            entreeComposite.connect(portCible);
            portCible.connect(entreeComposite);
        }
        //pour ne pas pouvoir link deux fois (et libère de la mémoire)
        entrees = null;
    }
}
